'use strict'

const titbit = require('titbit')
const {cookie,session} = require('titbit-toolkit')
const token = require('titbit-token')

let tok = new token({
    // token有效期，单位：秒
    expires:30,
    //必须是32位字母数字
    key:'zxcvbnmlk8huio8iuhgt7huioplk1234',
    // 必须是16位字母数字
    iv:'12mnjkl356hdvxj8'
})

const app = new titbit({
    debug:true
})

app.use(new cookie)
    .use(new(session))

app.use(async(c,next)=>{
    c.setHeader('x-test-key',`${Math.random()}`)
    await next()
})

app.use(async(c,next)=>{                //用use添加的函数叫  中间站（middleware）
    if(c.query.say === '12345'){
        await next()
    }else{
        c.status(403).send('deny')
    }
},{name:['home'],method:['GET']})

app.get('/',async c=>{
    c.send('ok')
},{name:'home',group:'home'})   //给路由起了个名，命名了个分组
app.get('/test',async c=>{
    c.send('test is ok')
})
// app.get('/:x/:y',async c=>{
//     c.setSession('x',c.param.x)
//     c.setSession('y',c.param.y)
//     c.send(c.getSession())
// })         //与app.get('/token',async..冲突

app.get('/token',async c=>{      //请求返回的值
    let tk = tok.make({
        id:'123',
        user:'node',
        level:12
    })
    c.send(tk);
})

app.get('/decrypt/:token',async c=>{   //请求的值加密后返回来
    c.send(tok.verify(c.param.token))
})

app.run(1235)